package com.ftg.learn.sys.user.controller;

import com.ftg.learn.comm.entity.sys.User;
import com.ftg.learn.sys.user.service.IUserService;
import com.ftg.learn.sys.user.service.impl.UserServiceImpl;
import com.ftg.learn.util.AbstractController;
import com.ftg.learn.util.ResBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 *
 *  用户列表功能 ：
 *     1 ： 分页显示，列出内容如下 1 帐号  2 员工姓名 3 员工类型  4 员工职务  这个分页通用封装不能用了,要自己完成分页 （本周完成）
 *
 *  删除操作
 *     1 : 删除用户的时候不能删除 员工
 *     2 ： 删除用户 表  用户角色中间表
 *  用户的添加方法，我们写，通用生成的，但是页面不用 (mybatis plus)
 *
 * 用户授权 :
 *    当前这个用户是什么 角色？
 *
 *
 * <p>
 * 用户表 前端控制器
 * </p>
 *
 * @author kangjx
 * @since 2022-10-30
 */
@RestController
@Api(tags = "用户管理")
@RequestMapping("/system/user")
public class UserController{


    @Resource
    IUserService iUserService;

    @GetMapping("/accountList")
    @ApiOperation("用户列表页功能，关联员工表、班级表")
    public ResBean accountList(
        @RequestParam("page") @ApiParam(value = "页码", defaultValue = "1") int page,
        @RequestParam("limit") @ApiParam(value = "显示条目", defaultValue = "10") int limit,
        @RequestParam(value = "val",required = false) @ApiParam(value = "帐号|用户名", required = false,defaultValue = "admin") String val
    ){
        return iUserService.accountList(page,limit,val);
    }


    /**
     * 其实叫用户冻结功能
     * @param id  用户编号
     * @return
     */
    @DeleteMapping("/freezeUser")
    @ApiOperation("用户冻结功能")
    public ResBean delUserWithRole(@RequestParam("id")@ApiParam(value = "用户主键",required = true) Integer id){
        boolean ist = iUserService.delUserWithRole(id);
        return ist ? ResBean.success() : ResBean.failure();
    }


    /**
     * 用户解冻功能
     * @param id  用户编号
     * @return
     */
    @DeleteMapping("/unFreezeUser")
    @ApiOperation("用户解冻功能")
    public ResBean unFreezeUser(@RequestParam("id")@ApiParam(value = "用户主键",required = true) Integer id){
        boolean ist = iUserService.unFreezeUser(id);
        return ist ? ResBean.success() : ResBean.failure();
    }



    /**
     * 重置密码| 修改个人密码使用
     * @param id  用户编号
     * @return
     */
    @PutMapping("/resetPasword")
    @ApiOperation("重置密码")
    public ResBean resetPasword(
            @RequestParam("id")@ApiParam(value = "用户主键",required = true) Integer id,
            @RequestParam(value = "password",required = false)@ApiParam(value = "个人密码",required = false) String password
    ){
        boolean ist = iUserService.resetPasword(id,password);
        return ist ? ResBean.success() : ResBean.failure();
    }


    /**
     * 用户分角色
     * @param id 用户编号
     * @param rids 大量的角色编号
     * @return
     */
    @PostMapping("/grantUserWithRole")
    @ApiOperation("用户分角色")
    public ResBean grantUserWithRole(
            @RequestParam("id")@ApiParam(value = "用户主键",required = true) Integer id,
            @RequestParam("rids")@ApiParam(value = "角色的编号",required = true) List<Integer> rids
    ){
        boolean ist = iUserService.saveUserRole(id,rids);
        return ist ? ResBean.success() : ResBean.failure();
    }

}
